package com.piesat.quake.business.device.model.config;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.piesat.quake.business.device.mqtt.anno.CharField;
import com.piesat.quake.business.device.mqtt.anno.IgnoreField;
import com.piesat.quake.business.device.mqtt.anno.LengthField;

import java.io.Serializable;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 *
 * </p>
 *
 * @author ${author}
 * @since 2023-03-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("d_station_data")
public class StationData implements Serializable {

    private static final long serialVersionUID = 1L;

    //数据块长度	Int	4B	对于 2 台站信息的数据块，整个数据块的长度；
    @TableField(exist = false)
    @LengthField
    private int length;
    //最新台站ID	Char	8B	格式为：xx.xxxxx（台网代码.台站代码），编码规则见地震行业的《地震数据通道编码》标准。该台站ID为最新的台站ID，即若服务器端需修改设备台站ID，则改动该项。
    @CharField(8)
    @TableId(value = "id", type = IdType.INPUT)
    private String id;

    //经度	Float	4B	地震仪安装位置经度，范围0-180°；
    @TableField("longitude")
    private float longitude;
    //纬度	Float	4B	地震仪安装位置纬度，范围0-90°；
    @TableField("latitude")
    private float latitude;
    //安装方位	Float	4B	地震仪安装时的方位角，为地震仪X轴正向与正东方向的夹角，范围0-360°；
    @TableField("azimuthal")
    private Float azimuthal;
    //应变阈值	Float	4B	应变阈值；
    @TableField("strain_threshold")
    private Float strainThreshold;
    //加速度阈值	Float	4B	加速度阈值；
    @TableField("acceleration_threshold")
    private Float accelerationThreshold;
    //台网编号	Char	2B	台网代码，例如GD表示广东；
    @CharField(2)
    @TableField("station_code")
    private String stationCode;

    //位置标识符	Char	2B	台站的地震计编号；
    @CharField(2)
    @TableField("number")
    private String number;
    //实时上传点数	Int	4B	实时数据报文每个通道每次上传的数据点数；
    @TableField("passage_data_count")
    private Integer passageDataCount;
    //采样点数	Int	4B	传感器每个通道的数据采样率
    @TableField("sampling_rate")
    private Integer samplingRate;
    //振动模式	Byte	1B	0表示3振动模式； 1表示6振动模式； 2表示9振动模式。
    @TableField("mode")
    private Byte mode;
    //版本	Char	8B	设备软件版本标识；例如：03.00.01；
    @CharField(8)
    @TableField("version")
    private String version;
    @IgnoreField
    @TableField("topic_version")
    private String topicVersion;

}
